/*
               File: PrcCadasterEnquete
        Description: Prc Cadaster Enquete
             Author: GeneXus C# Generator version 10_2_5-78484
       Generated on: 6/6/2014 9:52:43.51
       Program type: Callable routine
          Main DBMS: sqlserver
*/
using System;
using System.Collections;
using GeneXus.Utils;
using GeneXus.Resources;
using GeneXus.Application;
using GeneXus.Metadata;
using System.Data;
using System.Data.SqlClient;
using GeneXus.Data;
using com.genexus;
using GeneXus.Data.ADO;
using GeneXus.Data.NTier;
using GeneXus.Data.NTier.ADO;
using System.Runtime.Remoting;
using GeneXus.WebControls;
using GeneXus.Http;
using GeneXus.Procedure;
using GeneXus.XML;
using GeneXus.Search;
using GeneXus.Encryption;
using GeneXus.Http.Client;
using System.Threading;
using System.Xml.Serialization;
using System.Data.SqlTypes;
using System.ServiceModel;
using System.Runtime.Serialization;
namespace GeneXus.Programs {
   public class prccadasterenquete : GXProcedure
   {
      public prccadasterenquete( )
      {
         context = new GxContext(  );
         DataStoreUtil.LoadDataStores( context);
         dsDefault = context.GetDataStore("Default");
         IsMain = true;
         context.SetDefaultTheme("GeneXusXEv2");
      }

      public prccadasterenquete( IGxContext context )
      {
         this.context = context;
         IsMain = false;
         dsDefault = context.GetDataStore("Default");
      }

      public void release( )
      {
      }

      public void execute( ref short aP0_EnqueteId ,
                           ref bool aP1_EnqueteMultiplasRespostas ,
                           ref String aP2_EnqueteTitulo ,
                           ref DateTime aP3_EnqueteValidade )
      {
         this.AV8EnqueteId = aP0_EnqueteId;
         this.AV9EnqueteMultiplasRespostas = aP1_EnqueteMultiplasRespostas;
         this.AV10EnqueteTitulo = aP2_EnqueteTitulo;
         this.AV11EnqueteValidade = aP3_EnqueteValidade;
         initialize();
         executePrivate();
         aP0_EnqueteId=this.AV8EnqueteId;
         aP1_EnqueteMultiplasRespostas=this.AV9EnqueteMultiplasRespostas;
         aP2_EnqueteTitulo=this.AV10EnqueteTitulo;
         aP3_EnqueteValidade=this.AV11EnqueteValidade;
      }

      public DateTime executeUdp( ref short aP0_EnqueteId ,
                                  ref bool aP1_EnqueteMultiplasRespostas ,
                                  ref String aP2_EnqueteTitulo )
      {
         this.AV8EnqueteId = aP0_EnqueteId;
         this.AV9EnqueteMultiplasRespostas = aP1_EnqueteMultiplasRespostas;
         this.AV10EnqueteTitulo = aP2_EnqueteTitulo;
         this.AV11EnqueteValidade = aP3_EnqueteValidade;
         initialize();
         executePrivate();
         aP0_EnqueteId=this.AV8EnqueteId;
         aP1_EnqueteMultiplasRespostas=this.AV9EnqueteMultiplasRespostas;
         aP2_EnqueteTitulo=this.AV10EnqueteTitulo;
         aP3_EnqueteValidade=this.AV11EnqueteValidade;
         return AV11EnqueteValidade ;
      }

      public void executeSubmit( ref short aP0_EnqueteId ,
                                 ref bool aP1_EnqueteMultiplasRespostas ,
                                 ref String aP2_EnqueteTitulo ,
                                 ref DateTime aP3_EnqueteValidade )
      {
         prccadasterenquete objprccadasterenquete;
         objprccadasterenquete = new prccadasterenquete();
         objprccadasterenquete.AV8EnqueteId = aP0_EnqueteId;
         objprccadasterenquete.AV9EnqueteMultiplasRespostas = aP1_EnqueteMultiplasRespostas;
         objprccadasterenquete.AV10EnqueteTitulo = aP2_EnqueteTitulo;
         objprccadasterenquete.AV11EnqueteValidade = aP3_EnqueteValidade;
         objprccadasterenquete.context.SetSubmitInitialConfig(context);
         objprccadasterenquete.initialize();
         ThreadPool.QueueUserWorkItem( new WaitCallback( executePrivateCatch ),objprccadasterenquete);
         aP0_EnqueteId=this.AV8EnqueteId;
         aP1_EnqueteMultiplasRespostas=this.AV9EnqueteMultiplasRespostas;
         aP2_EnqueteTitulo=this.AV10EnqueteTitulo;
         aP3_EnqueteValidade=this.AV11EnqueteValidade;
      }

      void executePrivateCatch( object stateInfo )
      {
         try
         {
            ((prccadasterenquete)stateInfo).executePrivate();
         }
         catch ( Exception e )
         {
            GXUtil.SaveToEventLog( "Design", e);
            throw e ;
         }
      }

      void executePrivate( )
      {
         /* GeneXus formulas */
         /* Output device settings */
         AV14GXLvl1 = 0;
         /* Using cursor P000C2 */
         pr_default.execute(0, new Object[] {AV8EnqueteId});
         while ( (pr_default.getStatus(0) != 101) )
         {
            A35EnqueteId = P000C2_A35EnqueteId[0];
            A54EnqueteMultiplasRespostas = P000C2_A54EnqueteMultiplasRespostas[0];
            A36EnqueteTitulo = P000C2_A36EnqueteTitulo[0];
            A37EnqueteValidade = P000C2_A37EnqueteValidade[0];
            AV14GXLvl1 = 1;
            A54EnqueteMultiplasRespostas = AV9EnqueteMultiplasRespostas;
            A36EnqueteTitulo = AV10EnqueteTitulo;
            A37EnqueteValidade = AV11EnqueteValidade;
            /* Using cursor P000C3 */
            pr_default.execute(1, new Object[] {A54EnqueteMultiplasRespostas, A36EnqueteTitulo, A37EnqueteValidade, A35EnqueteId});
            pr_default.close(1);
            dsDefault.SmartCacheProvider.SetUpdated("TBLEnquete") ;
            /* Exiting from a For First loop. */
            if (true) break;
         }
         pr_default.close(0);
         if ( AV14GXLvl1 == 0 )
         {
            /*
               INSERT RECORD ON TABLE TBLEnquete

            */
            A54EnqueteMultiplasRespostas = AV9EnqueteMultiplasRespostas;
            A36EnqueteTitulo = AV10EnqueteTitulo;
            A37EnqueteValidade = AV11EnqueteValidade;
            /* Using cursor P000C4 */
            pr_default.execute(2, new Object[] {A36EnqueteTitulo, A37EnqueteValidade, A54EnqueteMultiplasRespostas});
            pr_default.close(2);
            /* Retrieving last key number assigned */
            /* Using cursor P000C5 */
            pr_default.execute(3);
            A35EnqueteId = P000C5_A35EnqueteId[0];
            pr_default.close(3);
            dsDefault.SmartCacheProvider.SetUpdated("TBLEnquete") ;
            if ( (pr_default.getStatus(2) == 1) )
            {
               context.Gx_err = 1;
               Gx_emsg = (String)(context.GetMessage( "GXM_noupdate", ""));
            }
            else
            {
               context.Gx_err = 0;
               Gx_emsg = "";
            }
            /* End Insert */
         }
         this.cleanup();
      }

      public void cleanup( )
      {
         context.CommitDataStores("PrcCadasterEnquete");
         CloseOpenCursors();
         if ( IsMain )
         {
            context.CloseConnections() ;
         }
         exitApplication();
      }

      protected void CloseOpenCursors( )
      {
      }

      public override void initialize( )
      {
         scmdbuf = "";
         P000C2_A35EnqueteId = new short[1] ;
         P000C2_A54EnqueteMultiplasRespostas = new bool[] {false} ;
         P000C2_A36EnqueteTitulo = new String[] {""} ;
         P000C2_A37EnqueteValidade = new DateTime[] {DateTime.MinValue} ;
         A36EnqueteTitulo = "";
         A37EnqueteValidade = DateTime.MinValue;
         P000C5_A35EnqueteId = new short[1] ;
         Gx_emsg = "";
         pr_default = new DataStoreProvider(context, new GeneXus.Programs.prccadasterenquete__default(),
            new Object[][] {
                new Object[] {
               P000C2_A35EnqueteId, P000C2_A54EnqueteMultiplasRespostas, P000C2_A36EnqueteTitulo, P000C2_A37EnqueteValidade
               }
               , new Object[] {
               }
               , new Object[] {
               }
               , new Object[] {
               P000C5_A35EnqueteId
               }
            }
         );
         /* GeneXus formulas. */
         context.Gx_err = 0;
      }

      private short AV8EnqueteId ;
      private short AV14GXLvl1 ;
      private short A35EnqueteId ;
      private int GX_INS4 ;
      private String scmdbuf ;
      private String Gx_emsg ;
      private DateTime AV11EnqueteValidade ;
      private DateTime A37EnqueteValidade ;
      private bool AV9EnqueteMultiplasRespostas ;
      private bool A54EnqueteMultiplasRespostas ;
      private String AV10EnqueteTitulo ;
      private String A36EnqueteTitulo ;
      private IGxDataStore dsDefault ;
      private short aP0_EnqueteId ;
      private bool aP1_EnqueteMultiplasRespostas ;
      private String aP2_EnqueteTitulo ;
      private DateTime aP3_EnqueteValidade ;
      private IDataStoreProvider pr_default ;
      private short[] P000C2_A35EnqueteId ;
      private bool[] P000C2_A54EnqueteMultiplasRespostas ;
      private String[] P000C2_A36EnqueteTitulo ;
      private DateTime[] P000C2_A37EnqueteValidade ;
      private short[] P000C5_A35EnqueteId ;
   }

   public class prccadasterenquete__default : DataStoreHelperBase, IDataStoreHelper
   {
      public ICursor[] getCursors( )
      {
         cursorDefinitions();
         return new Cursor[] {
          new ForEachCursor(def[0])
         ,new UpdateCursor(def[1])
         ,new UpdateCursor(def[2])
         ,new ForEachCursor(def[3])
       };
    }

    private static CursorDef[] def;
    private void cursorDefinitions( )
    {
       if ( def == null )
       {
          Object[] prmP000C2 ;
          prmP000C2 = new Object[] {
          new Object[] {"@AV8EnqueteId",SqlDbType.SmallInt,4,0}
          } ;
          Object[] prmP000C3 ;
          prmP000C3 = new Object[] {
          new Object[] {"@EnqueteMultiplasRespostas",SqlDbType.Bit,4,0} ,
          new Object[] {"@EnqueteTitulo",SqlDbType.VarChar,200,0} ,
          new Object[] {"@EnqueteValidade",SqlDbType.DateTime,8,0} ,
          new Object[] {"@EnqueteId",SqlDbType.SmallInt,4,0}
          } ;
          Object[] prmP000C4 ;
          prmP000C4 = new Object[] {
          new Object[] {"@EnqueteTitulo",SqlDbType.VarChar,200,0} ,
          new Object[] {"@EnqueteValidade",SqlDbType.DateTime,8,0} ,
          new Object[] {"@EnqueteMultiplasRespostas",SqlDbType.Bit,4,0}
          } ;
          Object[] prmP000C5 ;
          prmP000C5 = new Object[] {
          } ;
          def= new CursorDef[] {
              new CursorDef("P000C2", "SELECT [EnqueteId], [EnqueteMultiplasRespostas], [EnqueteTitulo], [EnqueteValidade] FROM [TBLEnquete] WITH (UPDLOCK) WHERE [EnqueteId] = @AV8EnqueteId ORDER BY [EnqueteId] ",true, GxErrorMask.GX_NOMASK | GxErrorMask.GX_MASKLOOPLOCK, false, this,prmP000C2,1,0,true,true )
             ,new CursorDef("P000C3", "UPDATE [TBLEnquete] SET [EnqueteMultiplasRespostas]=@EnqueteMultiplasRespostas, [EnqueteTitulo]=@EnqueteTitulo, [EnqueteValidade]=@EnqueteValidade  WHERE [EnqueteId] = @EnqueteId", GxErrorMask.GX_NOMASK | GxErrorMask.GX_MASKLOOPLOCK,prmP000C3)
             ,new CursorDef("P000C4", "INSERT INTO [TBLEnquete] ([EnqueteTitulo], [EnqueteValidade], [EnqueteMultiplasRespostas]) VALUES (@EnqueteTitulo, @EnqueteValidade, @EnqueteMultiplasRespostas)", GxErrorMask.GX_NOMASK,prmP000C4)
             ,new CursorDef("P000C5", "SELECT Ident_Current('[TBLEnquete]') ",false, GxErrorMask.GX_NOMASK | GxErrorMask.GX_MASKLOOPLOCK, false, this,prmP000C5,1,0,true,false )
          };
       }
    }

    public void getResults( int cursor ,
                            IFieldGetter rslt ,
                            Object[] buf )
    {
       switch ( cursor )
       {
             case 0 :
                ((short[]) buf[0])[0] = rslt.getShort(1) ;
                ((bool[]) buf[1])[0] = rslt.getBool(2) ;
                ((String[]) buf[2])[0] = rslt.getVarchar(3) ;
                ((DateTime[]) buf[3])[0] = rslt.getGXDate(4) ;
                break;
             case 3 :
                ((short[]) buf[0])[0] = rslt.getShort(1) ;
                break;
       }
    }

    public void setParameters( int cursor ,
                               IFieldSetter stmt ,
                               Object[] parms )
    {
       switch ( cursor )
       {
             case 0 :
                stmt.SetParameter(1, (short)parms[0]);
                break;
             case 1 :
                stmt.SetParameter(1, (bool)parms[0]);
                stmt.SetParameter(2, (String)parms[1]);
                stmt.SetParameter(3, (DateTime)parms[2]);
                stmt.SetParameter(4, (short)parms[3]);
                break;
             case 2 :
                stmt.SetParameter(1, (String)parms[0]);
                stmt.SetParameter(2, (DateTime)parms[1]);
                stmt.SetParameter(3, (bool)parms[2]);
                break;
       }
    }

 }

}
